package com.example.controller;

import com.example.pojo.User;
import jakarta.validation.Valid;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.Objects;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ws
 * Date: 2024-03-03
 * Time: 13:36
 */

@RestController
@RequestMapping("/user")
public class UserController {

    @GetMapping("/data")
    public String data() {
        // 空指针异常
        String name = null;
//        name.toString();
        return "data";
    }

    @GetMapping("/data1")
    public String data1() {
        // 算数异常
//        int a = 10 /0;
        return "data1";
    }


    // 接受用户数据，用户有校验注解
    // @Validated，开启校验
    /**
     * @Validated 代表应用校验注解! 必须添加!
     */
    @PostMapping("save")
    public Object save(@Validated @RequestBody User user,
                       //在实体类参数和 BindingResult 之间不能有任何其他参数, BindingResult可以接受错误信息,避免信息抛出!
                       BindingResult result) {
        //判断是否有信息绑定错误! 有可以自行处理!
        if (result.hasErrors()) {
            System.out.println("错误");
            return Objects.requireNonNull(result.getFieldError()).toString();
        }
        //没有,正常处理业务即可
        System.out.println("正常");
        return user;
    }
}
